docs: correct the "Act 1 idles beneath Act 2" premise; record the launch runway#757
Merged
Conversation
…nch runway Three docs claimed Act 1 keeps running during Act 2. It does not. `main.rs:555` takes the voyage branch and `main.rs:1018` continues, while both `game_tick_with_context` call sites sit at `:1253`/`:1608` — after it. Act 1 is frozen, and permanently (`vessel_launched` is never unset). The `main.rs` comment's "Act 1 systems idle untouched beneath it" is where this started: "idles untouched" reads as "keeps running", four lines above the `continue` that proves otherwise. It propagated into the dossier and then into the Act 2 braiding exploration, whose "Act 1 output is stranded with nowhere left to go" premise is the sole justification for the "Act 1 bridges" Phase 2 item in #734. There is no stranded output, so that item has no premise and must be re-argued as new content rather than reuse. - src/main.rs: state the actual control flow, with a note against reintroducing the phrasing - docs/dossiers/act2-pilgrimage.md: fix the interrelations diagram and the "During" bullet (living doc — corrected in place) - docs/explorations/2026-07-05-act2-systems-braiding.md: prepend a correction block; the wrong paragraph is preserved verbatim as the record of how the item came to be proposed. Names the live question the exploration should have asked: is it right that the hero goes inert for a 3-7 month era? - docs/decisions.md: new entry recording the 250k PR runway as arithmetic (302 PR/hr peak -> ~828h ~= 34.5 calendar days ~= 5 weekly check-ins, per the 7-day grant cap), why no simulator can or should answer it (pure fn + integer division on wall clock, zero RNG), and the resulting scope limit on balance-sim No behavior change. fmt + clippy -D warnings clean. Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Three docs claimed Act 1 keeps running during Act 2. It does not — and that error was load-bearing: it is the sole justification for a Phase 2 item in #734.
src/main.rs:555takes the voyage branch onvessel_launched && act2_enabled(),main.rs:1018continues, and bothgame_tick_with_contextcall sites sit at:1253/:1608— after it. Act 1 is frozen, not idling: no zones tick, no PR accrues, no Haven builds. And becausevessel_launchedis only ever settrue(never unset), it is permanent for that character. Confirmed intended design.How it propagated
The
main.rscomment is patient zero: "Act 1 systems idle untouched beneath it" — sitting four lines above thecontinuethat disproves it. "Idles untouched" reads as keeps running; it means frozen. From there:docs/dossiers/act2-pilgrimage.md:306repeated it verbatimdocs/explorations/2026-07-05-act2-systems-braiding.md:85-92built on it: a player's Act 1 output is "stranded — nowhere left to go"There is no stranded output to redirect, so nothing in that item is reuse: "fishing off the stern" is a new minigame, "Power Cores → Salvage" has no live source, "challenges as threat resolution" needs the challenge stack reachable from a screen that owns the whole frame. #734 has been updated to strike the item pending re-argument on its own merits.
Changes
src/main.rsdocs/dossiers/act2-pilgrimage.mddocs/README.md)docs/explorations/…-braiding.mddocs/decisions.mdThe runway entry, and why it exists
The 250,000 PR gate was briefly mistaken for an unmeasured release risk. It is closed-form:
wr_to_pr_per_hour(wr) = wr × (1 + wr/100)(src/loom/logic.rs:811), documented peak 131 WR/hr → 302 PR/hrsrc/core/tick_stages.rs:1235-1248) addselapsed / fill_secsPR whereelapsed = (now - last).min(604_800)— wall-clock, capped at 7 days250,000 ÷ 302 ≈ 828h ≈ **34.5 calendar days** ≈ **5 weekly check-ins**, accruing with the game closedNo RNG anywhere in that path — a pure function plus integer division on wall clock. Nothing is emergent, so simulation reveals nothing division doesn't. Worth recording because the headless simulator structurally cannot answer it:
src/bin/simulator/strategy.rs:361-363notes the Loom's wall-clock sustain "doesn't advance meaningfully in the headless simulator" and injects pattern completions instead. Two 3,000-hour runs from P50,000 and P250,000 on different seeds returnedpr_earnedof 17,995 and 17,994 — identical, because that PR came from injected challenge wins at ~6 PR/hr, not the Loom. The simulator isn't broken; it answers a different question.The entry therefore also scopes
balance-sim: it validates Act 1 → Z50 / Ascension X (the 28-pattern + Asc X prerequisites), and should not be read as evidence about Act 2's entrance.The live question this exposed
Recorded in both the exploration doc and #734, unanswered: is it right that the hero a player built over hundreds of hours goes inert for a 3–7 month era? That is a bigger design question than any Phase 2 bullet, and the old phrasing hid it.
Verification
make check— exit 0, all CI checks passed (fmt, clippy-D warnings, full test suite, progression check, security audit)🤖 Generated with Claude Code